
package edu.upn.sigemfi.plt.beans;

import edu.upn.sigemfi.plt.bc.SolicitudChequeraDelegate;
import edu.upn.sigemfi.plt.be.EstadoSolicitudChequera;
import edu.upn.sigemfi.plt.be.SolicitudChequera;
import edu.upn.sigemfi.seg.be.PersonaNatural;
import java.util.List;
import javax.faces.model.SelectItem;
import edu.upn.sigemfi.seg.beans.AbstractController;
import java.util.Date;

public class SolicitudChequeraController extends AbstractController{

    private SolicitudChequeraDelegate delegado;
    private SolicitudChequera solicitudChequera;
    private PersonaNatural personaNatural;
    private boolean bolSolicitudChequera;

    public SolicitudChequeraController() {
        delegado = new SolicitudChequeraDelegate();
        personaNatural = new PersonaNatural();
        bolSolicitudChequera = false;
     }

    public String nuevo(){
        solicitudChequera = new SolicitudChequera();
        return "nuevo";
    }

    public String ListarCliente(){
        bolSolicitudChequera = true;
        return "listarClientes";
    }

    public String cancelar(){
        bolSolicitudChequera = false;
        return "listar";
    }

    public String index() {
        return "index";
    }

    public String editar(){
        return "editar";
    }

    public String mostrar(){
        return "mostrar";
    }

    public String solicitudchequera(){
        return "solicitudchequera";
    }

    public String registrar(){
        ClienteController tempcontroller = (ClienteController) getBean("ClienteController");
        if(tempcontroller != null){
             personaNatural = tempcontroller.personaNatural;//para controlar la opcion de agregar persona NATURAL
        }

        try {
            Date datasolChequera = new Date();
            solicitudChequera.setFechaSolicitud(datasolChequera);
            solicitudChequera.setEstado(EstadoSolicitudChequera.Creado);
            solicitudChequera.setFidSegPersona(personaNatural);
            delegado.crear(solicitudChequera);
            info("La Solicitud Chequera se registró correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        bolSolicitudChequera = false;
        return "listar";
    }

    public String actualizar(){
        try {
            delegado.editar(solicitudChequera);
            info("La Solicitud Chequera se actualizó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        bolSolicitudChequera = false;
        return "listar";
    }

    public String eliminar(){
        try {
            delegado.eliminar(solicitudChequera);
            info("La Solicitud Chequera se eliminó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public SolicitudChequera buscar(Long codigo){
        try {
            return delegado.buscar(codigo);
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public List<SolicitudChequera> getSolicitudChequeras(){
        try {
            return delegado.listar();
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public SelectItem[] getEstadoSolicitudChequera(){
        EstadoSolicitudChequera[] lista = EstadoSolicitudChequera.values();
        SelectItem[] select = new SelectItem[lista.length];
        int i=0;
        for (EstadoSolicitudChequera s : lista){
            select[i++] = new SelectItem(s, s.toString());
        }
        return select;
    }

    public Date getFechaActual(){
        return new Date();
    }
    
    public SolicitudChequera getSolicitudChequera() {
        return solicitudChequera;
    }

    public void setSolicitudChequera(SolicitudChequera solicitudChequera) {
        this.solicitudChequera = solicitudChequera;
    }

    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }

    public boolean isBolSolicitudChequera() {
        return bolSolicitudChequera;
    }

    public void setBolSolicitudChequera(boolean bolSolicitudChequera) {
        this.bolSolicitudChequera = bolSolicitudChequera;
    }
}
